package com.sz.biz.common.base.service;

import com.sz.biz.common.base.entity.Country;
import com.sz.biz.common.base.dto.AreaDto;
import com.sz.biz.common.base.dto.CountryDto;
import com.sz.common.base.dto.QueryParams;
import com.sz.common.base.dto.ResultDto;

import java.util.List;

/**
 * Function: AreaManager <br>
 * Author: penghui.zheng <br>
 * Date: 2016-11-09 15:47:00
 */
public interface AreaManager {

    /**
     *
     */
    void refreshCountryCache();

    /**
     * @param areaDto
     * @return
     */
    Integer saveArea(AreaDto areaDto);

    /**
     * @param areaDto
     * @return
     */
    Integer updateArea(AreaDto areaDto);

    /**
     * @param id
     * @param countryCode
     */
    void deleteByAreaId(String id, String countryCode);

    /**
     * @param ids
     */
    void deleteByCountryIds(List<Integer> ids);

    /**
     * @param areaCode
     */
    void checkAreaCode(String areaCode);

    /**
     * @param figureCode
     * @return @
     */
    void checkFigureCode(String figureCode);

    /**
     * @param triadCode
     * @return @
     */
    void checkTriadCode(String triadCode);

    /**
     * @param name
     * @return @
     */
    void checkCountryName(String name);

    /**
     * 根据父id及条件分页查询下属地区
     *
     * @param countryCode
     * @param parentId
     * @param q
     * @param pageIndex
     * @param pageSize
     * @return
     */
    ResultDto findAreaList(String countryCode, String parentId, String q, int pageIndex, int pageSize);

    /**
     * 根据父id查询下属地区
     * @param countryCode
     * @param parentId
     * @param q
     * @param pageIndex
     * @param pageSize
     * @return
     */
    ResultDto findByParentId(String countryCode, String parentId, String q, int pageIndex, int pageSize);


    /**
     *根据Id查找地区信息
     */
    List<AreaDto> findByAreaId(String countryCode, String id);
    /**
     * 根据countryCode和父id及条件分页查询下属地区国际化
     *
     * @param params
     * @param countryCode
     * @param parentId
     * @return
     */
    ResultDto findI18nByParam(QueryParams params, String countryCode, String parentId);

    /**
     * 根据id查询国家
     *
     * @param id
     * @return
     * @throws Exception
     */
    CountryDto findByCountryId(int id);

    /**
     * 根据id查询国家
     *
     * @param figureCode figureCode
     * @return
     */
    Country findByCountryCode(String figureCode);

    /**
     * 分页查询国家
     *
     * @return
     */
    ResultDto findCountryList(QueryParams params);

}
